home *** CD-ROM | disk | FTP | other *** search
- #include <string.h>
-
- int rfc822_realname(const char *from_header,int *from,int *to)
- {
- char *s,*e;
- int i,j,z;
- int a,b;
-
- *from=0; *to=-1;
-
- if((from_header!=(void *)0)&&(from_header[0]!='\0')){
- if(strchr(from_header,(int)'@')==NULL){
- // no regular rfc822 thing
- i=0;
- j=strlen(from_header)-1;
- if((from_header[i]=='(')&&(from_header[j]==')')){
- i++; j--;
- }
- *from=i; *to=j;
- return 0;
- }
- s=strrchr(from_header,(int)'<');
- e=strrchr(from_header,(int)'>');
- if((s!=NULL)&&(e!=NULL)){
- i=strlen(s);
- j=strlen(e);
- z=strlen(from_header);
- if(i>j){
- if(i==z){
- a=1;
- b=i-j-1;
- }
- else{
- int ii;
- a=0;
- ii=z-i-1;
- if(from_header[ii]==' ')
- ii--;
- b=ii;
- }
- if((from_header[a]=='"')&&(from_header[b]=='"')){
- a++; b--;
- }
- *from=a; *to=b;
- return 0;
- }
- }
- else{
- s=strchr(from_header,(int)'(');
- e=strrchr(from_header,(int)')');
- if(s==e-1){
- int t=strlen(from_header)-strlen(s)-1;
- while(t>0 && (from_header[t]==' '))
- t--;
- if(t>0)
- *to=t;
- else
- *to=strlen(from_header);
- *from=0;
- return 0;
- }
- if((s!=(void *)0)&&(e!=(void *)0)){
- i=strlen(s);
- j=strlen(e);
- z=strlen(from_header);
- if(i>j+1){
- a=z-i+1;
- b=z-j-1;
- if((from_header[a]=='"')&&(from_header[b]=='"')){
- a++; b--;
- }
- *from=a; *to=b;
- return 0;
- }
- }
- else{
- *from=0;
- *to=strlen(from_header)-1;
- return 0;
- }
- }
- }
- return 0;
- }
-